package files;

import java.io.File;
import java.nio.file.Path;

/**
 * 1、java.nio.file.Path 从 JDK 11 开始新增了 of( String , String ... ) 方法 用于获取 Path 实例
 * 2、了解 java.nio.file.Path 中的常用方法
 * 3、了解 java.nio.file.File 和 java.nio.file.Path 之间的相互转换
 */
public class PathTest2 {

	public static void main(String[] args) {
		
		// JDK 11 中 为 Path 接口定义了一个 static 方法用于获取 Path 类型的实例
		Path path = Path.of( "." , "src" , "files" );
		System.out.println( path );
		
		Path absolutePath = path.toAbsolutePath(); // 获得绝对路径
		System.out.println( absolutePath );
		
		System.out.println( "~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~" );
		
		path = Path.of( "src" , "files" );
		System.out.println( path );
		
		absolutePath = path.toAbsolutePath(); // 获得绝对路径
		System.out.println( absolutePath );
		
		System.out.println( "~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~" );
		
		int count = absolutePath.getNameCount(); // 获取不同层次的路径名个数
		for( int i = 0 ; i < count ; i++ ) {
			Path name = absolutePath.getName( i ) ; // 获得指定层次的路径名称
			System.out.println( name  );
		}
		
		System.out.println( "~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~" );
		
		// subpath( int begin , int end ) 用于获取 [ begin , end ) 之间的路径
		Path subpath = absolutePath.subpath( 0 ,  1 );
		System.out.println( subpath );
		
		System.out.println( "~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~" );
		
		// Path 转换为 File 
		File fod = path.toFile() ;
		System.out.println( fod );
		
		// File 转换为 Path
		Path p = fod.toPath();
		System.out.println( p );
		
	}

}
